The present invention relates to a communications system and method both of which use a pair of communications devices for communicating messages across a data channel.
A protocol which aids the transfer of data is intended to be used to effect delivery to a communicating device that may be executing higher level application programs. The messages transferred between the communication devices include protocol control codes of the protocol and data. The protocol should be transparent to the higher level application programs which rely on the protocol and the communications devices so that unnecessary and excessive communication responsibilities are not that of the higher level application programs. Consequently, many application programs include their own high level protocol programs to effect the proper compilation of multiple messages transferred over the data channel. The data portion of the message includes the higher level protocols and therefore is not a part of the protocol that is used to effect delivery between the communication devices.
The two communications devices which transmit data to each other must account for the nature of their communications channel. Many useful communications channels are error prone, that is, information can be lost or corrupted in the process of data transfer from one device to the other. Other useful qualities of the data channels, such as their extreme speed or their relative inexpensiveness, may prompt the system designer to use them anyway and to provide a mechanism which allows the communicating devices to transfer their data even when the data channel is error prone.
A proper solution to using an error-prone data channel is to provide a protocol for transferring the information within flow restrictions, detecting errors and providing recovery from the errors. There are many such protocols used in the art. The protocols are tailored to a specific set of problems and to a specific data channel.
The degree of error to which the data channel is prone affects the efficiency and effectiveness of the protocol. Most protocols are concerned with data channels that are fairly likely to lose messages or to corrupt data in transit. Efficient use of the high speed capability of the data channel is important because the transfer rate affects the efficiency of a computer system.
Flow control is required during data transfers between communicating devices. Data is lost if the amount of transferred data exceeds the capacity of the receiving communications device thereby degrading the effective transfer rate. Most protocols for high speed data channels assume a predetermined memory capacity.
Acknowledgments are those protocol control codes that are used to signal a transmitting device that the receiving device has received a message. These acknowledgment protocol control codes are well known in the art.
Each particular control code, e.g., acknowledgment, has a specific meaning. Because a control code can have different meanings depending upon the state of the communicating devices, a single meaning control code is inefficient. Multiple meaning control codes can have multiple purposes so as to reduce the number of communications required.
Piggy-backing, which is the combining of protocol control codes and data transferred in a single message, is well known in the art. The use of acknowledgment control codes in combination with data in a message, that is, the data and control codes are piggy-backed, has been used to avoid the transmission of a message merely to effectuate flow control.
To avoid memory capacity over-flow of a receiving device, flow control is necessary. The data flow to a receiving device must be at a rate such that the receiving memory capacity does not overflow and lose data. The use of separate acknowledgment protocol control codes within a message containing only the control code has been used in the prior art to effect flow control. The use of acknowledgment messages without data for the sole purpose of flow control disadvantageously decreases the efficiency of the communicating devices over the data channel because two acknowledgments may be required. One acknowledges receipt of data and a second signals the ability to receive another message. These two messages can be replaced with a single message. This single message has both meanings.
Other types of communicating devices have used hold-off periods for flow control. The transmitting device will hold-off sending a data message until it has received an acknowledgment or has waited for a long time-out period. This time-out period is used to allow the receiving device sufficient time to process the data it has received. The receiving device processes the data thereby emptying its memory capacity so that it can receive additional data. If the acknowledgment is not received at the end of the long time out period, an error condition is recognized. The use of the hold-off period eliminates the need to send the acknowledgment immediately after receipt because no time-out error occurs until after the time-out period. Consequently, the receiving device has until the expiration of the time-out period to acknowledge receipt of a message.
The hold-off with long time-outs, in combination with multiple meaning control codes piggy-backed with data, increases the efficiency of the communicating devices. A receiving device only sends the acknowledgment after it has processed previously received data. This acknowledgment can be piggy-backed with a data message and the acknowledgment can mean that the receiving device received the previously transmitted message and is ready to receive another message. Consequently, there are a minimum number of messages required and this improves the efficiency of the communicating devices.